package com.echo.util.impl;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;

public class ValidateUtils {
	/**
	 * 判断是否为空
	 * 
	 * @param valstr
	 * @return
	 */

	public static boolean isNotEmpty(String valstr) {
		return valstr != null && !"".equals(valstr.trim());
	}

	/**
	 * 判断字符串是否是整数
	 */
	public static boolean isValidInteger(String valstr) {
		try {
			Integer.parseInt(valstr);
			return true;
		} catch (NumberFormatException e) {
			return false;
		}
	}

	/**
	 * 判断字符串是否是浮点数
	 */
	public static boolean isValidDouble(String valstr) {
		try {
			Double.parseDouble(valstr);
			if (valstr.contains("."))
				return true;
			return false;
		} catch (NumberFormatException e) {
			return false;
		}
	}

	/**
	 * 判断字符串是否是数字
	 */
	public static boolean isValidNumber(String valstr) {
		return isValidInteger(valstr) || isValidDouble(valstr);
	}

	/**
	 * 判断日期格式是否正确 2014-12-21 样式
	 * 
	 * @param valstr
	 * @return 1.DateFormat中的setLenient(boolean flag)方法
	 * 
	 *此方法用来标志是否严格解析日期.其实很简单,就是如果你输入的日期不合法,它会不会先进行一定的计算.计算出能有合法的值,
	 *就以计算后的值为真正的值.比如说当你使用的时候有2012-02-31,2012-14-03这样数据去format,
	 *如果让setLenient(true).那么它就会自动解析为2012-03-02和2013-02-03这样的日期.
	 * 如果改为setLenient(false)就会让这样出现解析异常,因为去掉了计算,而这样的数据又是不合法的，
	 *所以出现异常也是合理的.
	 * 
	 * 
	 * SimpleDateFormat中的parse方法可以  
	 * 把String型的字符串转换成特定格式的date类型  
	 * 
	 * 
	 *SimpleDateFormat中的format方法可以  
	 *把Date型的字符串转换成特定格式的String类型
	 */
	public static boolean isValidDate(String valstr) {
		try {
			DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
			// 是否严格解析日期
			dateFormat.setLenient(false); // 严格解析
			dateFormat.parse(valstr);
			return true;
		} catch (Exception e) {
			return false;
		}
	}
	

}
